package test


import (
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"gorm.io/gorm/schema"
	"time"
	"fmt"
)

var Gdb *gorm.DB
var err error

func init() {

	Db,err := gorm.Open(mysql.New(mysql.Config{
		DSN:"root:root123@tcp(localhost:3306)/ginchat?charset=utf8mb4&parseTime=True&loc=Local",
		DefaultStringSize:256,
		SkipInitializeWithVersion: false,
	}),&gorm.Config{
		SkipDefaultTransaction: false,
		NamingStrategy: schema.NamingStrategy{
			TablePrefix: "za_",  //表前缀，‘User’的表名应该是‘za_users’
			SingularTable: true,  // 使用单数表名，启用该选项，此时 ‘User’的表名应该是‘za_user’
		},
		DisableForeignKeyConstraintWhenMigrating: true, // 逻辑外键 （代码里面自动外键 ，外键关系）
	})

	//链接池设置
	sqlDB,_ := Db.DB()
	sqlDB.SetMaxIdleConns(10) //链接池中，最大的空闲链接数
	sqlDB.SetConnMaxIdleTime(100) //链接池中，最多容纳的链接数量
	sqlDB.SetConnMaxLifetime(time.Hour) //链接池中 ，链接的最大可复用时间

	//M := DB.Migrator() //自动建表函数
	//fmt.Println(M.HasTable(&User{}))
	//// database name and    password
	if err != nil {
		fmt.Println(err)
	}
	Gdb = Db
}